package com.zx._01_基础._013_io;

import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;


/**
 * @version v1.0
 * @Project: dataShare
 * @Title: DirectoryMonitor
 * @Description: JDK 1.7新增文件扫描工具
 * @author: zhangx
 * @date: 2017年7月26日 下午1:04:11
 * @company: webyun
 * @Copyright: Copyright (c) 2017
 */
public class 文件的监听 {

    public static void main(String[] args) throws IOException, InterruptedException {
        // 获得文件系统的WatchService对象
        WatchService watchService = FileSystems.getDefault().newWatchService();
        // 为D盘注册监听
        Paths.get("D:\\log").register(watchService,
                StandardWatchEventKinds.ENTRY_CREATE,
                StandardWatchEventKinds.ENTRY_DELETE,
                StandardWatchEventKinds.ENTRY_MODIFY);

        while (true) {//这个方法是同步阻塞的
            // 获取下一个文件变化事件
            WatchKey key = watchService.take();
            for (WatchEvent<?> event : key.pollEvents()) {
                System.out.println(event.context() + "文件发生了" + event.kind() + "事件");
            }
            // 重设watchkey
            boolean valid = key.reset();
            // 如果重设失败，则退出监听
            if (!valid) {
                break;
            }
        }
    }
}
